import { Bot_msg } from "../../model/bot/bot_msg";
import server from "../../model/client/server";
import { mathType, packge } from "../../model/msgHandle/packge";
let moveMap:Map<string,number> = new Map();
class index extends packge {

    constructor() {
        super()
    }
    init(): void {
        console.log('初始化成功---')
        this.addMath(mathType.math_all, '位置', ((msg: Bot_msg) => { this.position(msg) }), this)
        this.addMath(mathType.math_all, '上', ((msg: Bot_msg) => { this.move_top(msg) }), this)
        this.addMath(mathType.math_all, '下', ((msg: Bot_msg) => { this.move_down(msg) }), this)
        this.addMath(mathType.math_all, '左', ((msg: Bot_msg) => { this.move_left(msg) }), this)
        this.addMath(mathType.math_all, '右', ((msg: Bot_msg) => { this.move_right(msg) }), this)
        this.addMath(mathType.math_all, '进入轮回空间', ((msg: Bot_msg) => { this.joinCopyGame(msg) }), this)
        this.addMath(mathType.math_start, '攻击', ((msg: Bot_msg) => { this.attack(msg) }), this)
        this.addMath(mathType.math_start, '复活', ((msg: Bot_msg) => { this.resLife(msg) }), this)
        this.addMath(mathType.math_all, '世界任务', ((msg: Bot_msg) => { this.wordTask(msg) }), this)
        this.addMath(mathType.math_all, '地图', ((msg: Bot_msg) => { this.wordMap(msg) }), this)
        this.addMath(mathType.math_all, '完成任务', ((msg: Bot_msg) => { this.wordTaskDone(msg) }), this,false)
        this.addMath(mathType.math_start, '捕捉', ((msg: Bot_msg) => { this.catchPet(msg) }), this)
        this.addMath(mathType.math_all, '离开', ((msg: Bot_msg) => { this.outBattle(msg) }), this)
        this.addMath(mathType.math_all, '回到主神空间', ((msg: Bot_msg) => { this.backHomeWord(msg) }), this)
        this.addMath(mathType.math_start, 'c', ((msg: Bot_msg) => { this.lookUnity(msg) }), this)
        this.addMath(mathType.math_all, '位置帮助', ((msg: Bot_msg) => { this.help('位置', msg) }), this)
        this.addMath(mathType.math_all, '打开宝箱', ((msg: Bot_msg) => { this.openBox(msg) }), this)
        this.addMath(mathType.math_start, '祈祷', ((msg: Bot_msg) => { this.resState(msg) }), this, false)
        this.addMath(mathType.math_all, '钓鱼', ((msg: Bot_msg) => { this.fish_start(msg) }), this,false)
        this.addMath(mathType.math_all, '收杆', ((msg: Bot_msg) => { this.fish_end(msg) }), this,false)
        this.addMath(mathType.math_all, '砍树', ((msg: Bot_msg) => { this.chopping(msg) }), this,false)
    }
    chopping(msg:Bot_msg){
        server.api('word/Chopping',{},msg)
    }
    fish_start(msg:Bot_msg){
        server.api('word/StartFishing',{
            end: false
        },msg)
    }
    fish_end(msg:Bot_msg){
        server.api('word/StartFishing',{
            end: true
        },msg)
    }
    resState(msg:Bot_msg){
        server.api('bag/Use', { idx: 0, use: 1, name: "圣经" }, msg)
    }
    openBox(msg: Bot_msg) {
        server.api('word/OpenGiftBox', {}, msg)
    }
    lookUnity(msg: Bot_msg) {
        const idx = this.getNumber(msg.getContent());
        if (!idx) {
            this.help('位置', msg)
            return;
        }
        server.api('word/Look', { idx: idx }, msg)
    }
    backHomeWord(msg: Bot_msg) {
        server.api('word/BackHomeWord', {}, msg)
    }
    outBattle(msg: Bot_msg) {
        server.api('word/OutBattle', {}, msg)
    }
    /**
     * 捕捉宠物
     */
    catchPet(msg: Bot_msg) {
        const idx = this.getNumber(msg.getContent());
        if (idx == 0) {
            this.help('捕捉', msg)
            return;
        }
        server.api('word/CatchPet', { idx: idx }, msg)
    }

    async wordMap(msg: Bot_msg) {
        server.api('word/Map', {}, msg);
    }
    wordTaskDone(msg: Bot_msg) {
        server.api('word/WordTask_done', {}, msg);
    }
    // attack_boss(msg: Bot_msg) {
    //     server.api('word/AttackBoss', {}, msg)
    // }

    wordTask(msg: Bot_msg) {
        server.api('word/WordTask', {}, msg);
    }
    resLife(msg: Bot_msg) {
        server.api('word/ResLife', {}, msg)
    }
    joinCopyGame(msg: Bot_msg) {
        server.api('word/JoinCopyWord', {}, msg)
    }
    attack(msg: Bot_msg) {
        /**
         * 分析攻击意图
         * 攻击 = 攻击怪物
         * 攻击敌人 = 攻击怪物
         * 攻击怪物 = 攻击怪物
         * 攻击玩家 = 攻击当前位置玩家
         * 攻击boss = 攻击boss
         * 攻击全部 = 攻击当前位置全部单位
         */
        let content = msg.getContent();
        let idx = this.getNumber(content);
        if (content.includes('敌人') || content.includes('怪物')) {
            //    type 0
            server.api('word/Attack', { idx: idx, type: 0 }, msg)
            return
        } else if (content.includes('玩家')) {
            //    type 1
            server.api('word/Attack', { idx: idx, type: 1 }, msg)
            return
        } else if (content.includes('全部')) {
            //   type 2
            server.api('word/Attack', { idx: idx, type: 2 }, msg)
            return

        } else if (content.includes('BOSS')) {
            // server.api('word/AttackBoss', {}, msg)
            msg.repeText(`⚠️sb TX 判断技能装备名称违规，boss功能暂时关闭`)
            return
        } else {
            // idx 0   type 0
            server.api('word/Attack', { idx: idx, type: 0 }, msg)
            return
        }

        // msg.repeText('攻击指令分析错误');
        // let index = this.getNumber(msg.getContent());
        // if (index == 0) {
        //     msg.repeText(`攻击帮助菜单:没有在当前位置找到目标,攻击指令:攻击敌人 + id`);
        //     return;
        // }
        // server.api('word/Attack', { idx: index - 1,type:0 }, msg)
    }
    test_createEnemy(msg: Bot_msg) {
        server.api('word/Test_createEnemy', {}, msg)
    }
    async position(msg: Bot_msg) {
        let lastMoveTime = moveMap.get(msg.getAuthId()) || 0;
        if(Date.now() - lastMoveTime < 5000){
            msg.repeText(`✨移动太快啦，请休息一下两秒.`)
            return;
        }
        moveMap.set(msg.getAuthId(),Date.now());

        server.api('word/Position', {}, msg)
    }
    async move_top(msg: Bot_msg) {
        let lastMoveTime = moveMap.get(msg.getAuthId()) || 0;
        if(Date.now() - lastMoveTime < 5000){
            msg.repeText(`✨移动太快啦，请休息一下两秒.`)
            return;
        }
        moveMap.set(msg.getAuthId(),Date.now());
        server.api('word/Move', { dir: [0, 1] }, msg)
    }
    async move_down(msg: Bot_msg) {
        let lastMoveTime = moveMap.get(msg.getAuthId()) || 0;
        if(Date.now() - lastMoveTime < 5000){
            msg.repeText(`✨移动太快啦，请休息一下两秒.`)
            return;
        }
        moveMap.set(msg.getAuthId(),Date.now());
        server.api('word/Move', { dir: [0, -1] }, msg)
    }
    async move_right(msg: Bot_msg) {
        let lastMoveTime = moveMap.get(msg.getAuthId()) || 0;
        if(Date.now() - lastMoveTime < 5000){
            msg.repeText(`✨移动太快啦，请休息一下两秒.`)
            return;
        }
        moveMap.set(msg.getAuthId(),Date.now());
        server.api('word/Move', { dir: [1, 0] }, msg)
    }
    async move_left(msg: Bot_msg) {
        let lastMoveTime = moveMap.get(msg.getAuthId()) || 0;
        if(Date.now() - lastMoveTime < 5000){
            msg.repeText(`✨移动太快啦，请休息一下两秒.`)
            return;
        }
        moveMap.set(msg.getAuthId(),Date.now());
        server.api('word/Move', { dir: [-1, 0] }, msg)
    }

}
export default new index();